package com.cskaoyan.service.wx;

import com.cskaoyan.bean.MarketOrderGoods;
import com.cskaoyan.bean.bo.wx.WxOrderCommentBo;
import com.cskaoyan.bean.bo.wx.WxOrderSubmitBo;
import com.cskaoyan.bean.common.CommonData;
import com.cskaoyan.bean.vo.wx.order.OrderDetailVo;
import com.cskaoyan.bean.vo.wx.order.OrderListVo;
import com.cskaoyan.bean.vo.wx.order.WxOrderSubmitVo;

/**
 * @Author: zhang
 * @Date: 2022/11/23 9:00
 * @Since: jdk1.8
 */
public interface WxOrderService {
    /**
     * 查询不同状态的订单
     *
     * @param userId   用户id
     * @param showType 订单状态
     * @param page     页码
     * @param limit    限制
     * @return 订单信息
     */
    CommonData<OrderListVo> list(Integer userId, Integer showType, Integer page, Integer limit);

    /**
     * 查询订单详情
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 订单信息
     */
    OrderDetailVo detail(Integer userId, Integer orderId);

    /**
     * 取消订单
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 影响的行数
     */
    void cancel(Integer userId, Integer orderId);

    /**
     * 申请退款
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 影响的行数
     */
    void refund(Integer userId, Integer orderId);

    /**
     * 确认收货
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 影响的行数
     */
    void confirm(Integer userId, Integer orderId);

    /**
     * 删除订单
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 影响的行数
     */
    void delete(Integer userId, Integer orderId);

    /**
     * 删除订单
     *
     * @param userId  用户id
     * @param orderId 订单id
     * @return 影响的行数
     */
    void prepay(Integer userId, Integer orderId);

    /**
     * 评价商品
     *
     * @param orderId 订单id
     * @param goodsId 商品id
     * @return
     */
    MarketOrderGoods goods(Integer orderId, Integer goodsId);

    /**
     * 订单评价
     * @param wxOrderCommentBo 评价信息
     */
    void comment(WxOrderCommentBo wxOrderCommentBo);

    /**
     * 购物车中下单
     * @param wxOrderSubmitBo 订单信息
     * @return ok
     */
    WxOrderSubmitVo submit(Integer userId, WxOrderSubmitBo wxOrderSubmitBo);
}
